home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 355 / source / ifsdemo / bitstuff.mod < prev    next >
Text File  |  1990-02-02  |  1KB  |  72 lines

  1. IMPLEMENTATION MODULE BitStuff;
  2.  
  3. VAR a,b,c : INTEGER;
  4.  
  5. PROCEDURE BitAnd(a,b : INTEGER) : INTEGER;
  6.  
  7. VAR as,bs,cs : BITSET;
  8.     c        : INTEGER;
  9.  
  10. BEGIN
  11.    as := VAL(BITSET,a);
  12.    bs := VAL(BITSET,b);
  13.    cs := as * bs;
  14.    c := VAL(INTEGER,cs);
  15.    RETURN c;
  16. END BitAnd;
  17.  
  18. PROCEDURE BitOr(a,b : INTEGER) : INTEGER;
  19.  
  20. VAR as,bs,cs : BITSET;
  21.     c        : INTEGER;
  22.  
  23. BEGIN
  24.    as := VAL(BITSET,a);
  25.    bs := VAL(BITSET,b);
  26.    cs := as + bs;
  27.    c := VAL(INTEGER,cs);
  28.    RETURN c;
  29. END BitOr;
  30.  
  31. PROCEDURE BitXor(a,b : INTEGER) : INTEGER;
  32.  
  33. VAR as,bs,cs : BITSET;
  34.     c        : INTEGER;
  35.  
  36. BEGIN
  37.    as := VAL(BITSET,a);
  38.    bs := VAL(BITSET,b);
  39.    cs := as / bs;
  40.    c := VAL(INTEGER,cs);
  41.    RETURN c;
  42. END BitXor;
  43.  
  44. PROCEDURE SetBit(bit       : INTEGER;
  45.                  VAR field : INTEGER);
  46.  
  47. BEGIN
  48.    field := BitOr(bit,field);
  49. END SetBit;
  50.  
  51. PROCEDURE ClearBit(bit       : INTEGER;
  52.                    VAR field : INTEGER);
  53.  
  54. BEGIN
  55.    field := BitXor(bit,field);
  56. END ClearBit;
  57.  
  58. PROCEDURE TestBit(bit,field : INTEGER) : BOOLEAN;
  59.  
  60. VAR result : INTEGER;
  61.  
  62. BEGIN
  63.    result := BitAnd(bit,field);
  64.    IF result = 0 THEN
  65.       RETURN FALSE;
  66.    ELSE
  67.       RETURN TRUE;
  68.    END;
  69. END TestBit;
  70.  
  71. END BitStuff.
  72.